package br.unicamp.ic.inf300.arena.modelo.controleacesso;

import br.unicamp.ic.inf300.arena.modelo.pessoa.Funcionario;

public class UsuarioSistema extends Funcionario {

	private String loginId;

	private String senha;

	private Perfil perfil;

	public UsuarioSistema() {}
	
	public UsuarioSistema(String loginId, String senha, Perfil perfil) {
		super();
		this.loginId = loginId;
		this.senha = senha;
		this.perfil = perfil;
	}

	public UsuarioSistema(Funcionario funcionario, String loginId, String senha, Perfil perfil) {
		super(funcionario);
		setLoginId(loginId);
		setSenha(senha);
		setPerfil(perfil);
	}

	public String getLoginId() {
		return loginId;
	}

	public void setLoginId(String loginId) {
		this.loginId = loginId;
	}

	public String getSenha() {
		return senha;
	}

	public void setSenha(String senha) {
		this.senha = senha;
	}

	public Perfil getPerfil() {
		return perfil;
	}

	public void setPerfil(Perfil perfil) {
		this.perfil = perfil;
	}
	
	public boolean isAdministrador() {
		return Perfil.ADMINISTRADOR.equals(perfil);
	}
	
	public boolean isFinanceiro() {
		return Perfil.FINANCEIRO.equals(perfil);
	}
	
	public boolean isProducao() {
		return Perfil.PRODUCAO.equals(perfil);
	}
	
	public boolean isVendedor() {
		return Perfil.VENDEDOR.equals(perfil);
	}

	/**
	 * @return <code>String</code>
	 * JUtils plugin ;-)
	 */
	public String toString()
	{
	    final String TAB = "    ";
	    
	    StringBuffer retValue = new StringBuffer();
	    
	    retValue.append("UsuarioSistema ( ")
	        .append(super.toString()).append(TAB)
	        .append("loginId = ").append(this.loginId).append(TAB)
	        .append("perfil = ").append(this.perfil).append(TAB)
	        .append("senha = ").append(this.senha).append(TAB)
	        .append(" )");
	    
	    return retValue.toString();
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = super.hashCode();
		result = prime * result + ((loginId == null) ? 0 : loginId.hashCode());
		result = prime * result + ((perfil == null) ? 0 : perfil.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (!super.equals(obj))
			return false;
		if (getClass() != obj.getClass())
			return false;
		final UsuarioSistema other = (UsuarioSistema) obj;
		if (loginId == null) {
			if (other.loginId != null)
				return false;
		} else if (!loginId.equals(other.loginId))
			return false;
		if (perfil == null) {
			if (other.perfil != null)
				return false;
		} else if (!perfil.equals(other.perfil))
			return false;
		return true;
	}

}